package com.jdbc;

import com.connection.ConnectionPoolManage;

import java.sql.Connection;
import java.util.List;
import java.util.Vector;

/**
 * @author xinwang
 * @date 2020/3/17 21:34
 * 数据库连接池实现原理
 * 1.空闲线程  没有被使用的连接 存放  （容器）
 * 2.活动线程  正在使用的连接 （容器）
 * ####核心步骤###
 * 1.初始化线程池（空闲线程）
 * 2.调用getConnection方法  获取连接
 * 2.1 先去freeConnection（空闲线程容器）获取连接，存放入activeConnection（活动线程容器）中
 * 3.调用 releaseConnection方法   释放连接
 * 3.1 获取activeConnection（活动线程容器）集合连接，转移到freeConnection（空闲线程容器）
 **/
public class Test01 {

    public static void main(String[] args) {
        TestConnection testConnection = new TestConnection();
        for (int i = 1; i <= 10; i++) {
            Thread thread = new Thread(testConnection, "线程i:" + i);
            thread.start();
        }
    }

    static class TestConnection extends Thread {
        public void run() {
            for (int i = 1; i <= 10; i++) {
                Connection connection = ConnectionPoolManage.getConnection();
                System.out.println(currentThread().getName() + ">>" + connection);
                ConnectionPoolManage.closeConnection(connection);
            }
        }
    }

}
